Imports TeamUp.GarantiaTransacional
Imports Conexao
Imports System.Text
Imports System.Collections.Generic
Imports TeamUp.Entidades

Public Class EscopoDao
    Inherits Model

    Public Sub New(ByVal objGarantiaTransacional As GTransacional)
        GarantiaTransacional = objGarantiaTransacional
    End Sub

    Public Function getEscopo(ByVal objParametroEscopo As ParametroEscopo) As List(Of Escopo)
        Dim strSql As String
        Dim objConBanco As ConexaoBanco = New ConexaoBanco
        Dim objResultado As DataSet
        Dim lstEscopo As List(Of Escopo) = Nothing
        Dim strCriterio As String = "WHERE"
        Dim intContador As Integer
        Try
            strSql = "SELECT IdEscopoEstimativa, IdProjeto, descricao, premissa, unidadeEstimativa, situacao, " & _
                    " Case WHEN (avaliacaoEstimativa is null)	THEN ''     ELSE avaliacaoEstimativa End as avaliacaoEstimativa, numeroRodadas, " & _
                    " Case WHEN ( observacoes  is null)	THEN ''     ELSE  observacoes  End as observacoes " & _
                    " FROM  escopoEstimativa "

            If Not objParametroEscopo Is Nothing AndAlso objParametroEscopo.getIdProjeto <> "" Then
                strSql += strCriterio + " idProjeto = " + objParametroEscopo.getIdProjeto + ""
                strCriterio = " AND "
            End If

            If Not objParametroEscopo Is Nothing AndAlso objParametroEscopo.getIdEscopo <> "" Then
                strSql += strCriterio + " IdEscopoEstimativa = " + objParametroEscopo.getIdEscopo + ""
                strCriterio = " AND "
            End If

            If Not objParametroEscopo Is Nothing AndAlso objParametroEscopo.getSituacao <> "" Then
                strSql += strCriterio + " situacao = '" + objParametroEscopo.getSituacao + "'"
                strCriterio = " AND "
            End If

            objResultado = objConBanco.executarConsulta(strSql)

            If objResultado.Tables(0).Rows.Count > 0 Then
                lstEscopo = New List(Of Escopo)
                For intContador = 0 To objResultado.Tables(0).Rows.Count - 1
                    lstEscopo.Add(New Escopo(objResultado.Tables(0).Rows(intContador)("descricao"), _
                                        objResultado.Tables(0).Rows(intContador)("premissa"), Nothing, _
                                        objResultado.Tables(0).Rows(intContador)("unidadeEstimativa"), _
                                        objResultado.Tables(0).Rows(intContador)("IdProjeto"), _
                                        objResultado.Tables(0).Rows(intContador)("IdEscopoEstimativa"), _
                                        objResultado.Tables(0).Rows(intContador)("situacao"), _
                                        objResultado.Tables(0).Rows(intContador)("numeroRodadas"), _
                                        objResultado.Tables(0).Rows(intContador)("avaliacaoEstimativa"), _
                                        objResultado.Tables(0).Rows(intContador)("observacoes")))
                Next
            End If

            getEscopo = lstEscopo

        Finally
        End Try
    End Function

    Public Function consultarTotalEscopoEstimativaPorRodada(ByVal objParametroEscopo As ParametroEscopo) As Integer
        Dim strSql As String
        Dim objConBanco As ConexaoBanco = New ConexaoBanco
        Dim objResultado As DataSet
        Dim lstEscopo As List(Of Escopo) = Nothing
        Dim strCriterio As String = "WHERE"
        Dim intContador As Integer
        Try
            strSql = "SELECT COUNT(*) as TOTAL " & _
                    " FROM escopoEstimativa ee " & _
                    " LEFT JOIN atividade a  " & _
                    " ON ee.idEscopoEstimativa = a.idEscopoEstimativa " & _
                    " LEFT JOIN estimativas e  " & _
                    " ON a.IdAtividade = e.idAtividade "


            If Not objParametroEscopo Is Nothing AndAlso objParametroEscopo.getIdEscopo <> "" Then
                strSql += strCriterio + " ee.IdEscopoEstimativa = " + objParametroEscopo.getIdEscopo + ""
                strCriterio = " AND "
            End If

            If Not objParametroEscopo Is Nothing AndAlso objParametroEscopo.getRodada <> "" Then
                strSql += strCriterio + " rodada = " + objParametroEscopo.getRodada + ""
                strCriterio = " AND "
            End If

            objResultado = objConBanco.executarConsulta(strSql)

            consultarTotalEscopoEstimativaPorRodada = CInt(objResultado.Tables(0).Rows(intContador)("Total"))

        Finally
        End Try
    End Function

    Public Function totalEstimativaUsuarioEscopo(ByVal objParametroEscopo As ParametroEscopo) As Integer
        Dim strSql As String
        Dim objConBanco As ConexaoBanco = New ConexaoBanco
        Dim objResultado As DataSet
        Dim lstEscopo As List(Of Escopo) = Nothing
        Dim strCriterio As String = "WHERE"
        Dim intContador As Integer
        Try
            strSql = "SELECT Count(*) as Total " & _
                     " FROM escopoEstimativa ee " & _
                     " LEFT JOIN escopoEstimativa_usuario eeu " & _
                     "	 ON ee.idEscopoEstimativa = eeu.idEscopoEstimativa " & _
                     " LEFT JOIN usuario u " & _
                     "   ON eeu.idUsuario = u.idUsuario " & _
                     " LEFT JOIN atividade a " & _
                     " 	ON ee.idEscopoEstimativa = a.idEscopoEstimativa " & _
                     "LEFT JOIN estimativas es " & _
                     "	ON a.idAtividade = es.idAtividade  " & _
                     "		AND es.idUsuario = u.idUsuario "


            If Not objParametroEscopo Is Nothing AndAlso objParametroEscopo.getIdEscopo <> "" Then
                strSql += strCriterio + " ee.idEscopoEstimativa = " + objParametroEscopo.getIdEscopo + ""
                strCriterio = " AND "
            End If

            If Not objParametroEscopo Is Nothing AndAlso objParametroEscopo.getRodada <> "" Then
                strSql += strCriterio + " es.rodada = " + objParametroEscopo.getRodada + ""
                strCriterio = " AND "
            End If

            objResultado = objConBanco.executarConsulta(strSql)

            totalEstimativaUsuarioEscopo = CInt(objResultado.Tables(0).Rows(intContador)("Total"))

        Finally
        End Try
    End Function

    
    Public Sub incluirEscopo(ByVal objEscopo As Escopo)
        Dim strSql As String
        Dim objConBanco As ConexaoBanco = New ConexaoBanco
        Dim objResultado As Object
        Try
            strSql = "INSERT INTO escopoEstimativa(IdProjeto, descricao, premissa, unidadeEstimativa,numeroRodadas, situacao)VALUES(" & _
                    objEscopo.getIdProjeto & ",'" & objEscopo.getDescricao() & "','" & objEscopo.getPremissa & "','" & objEscopo.getUnidadeEstimativa & "'," & objEscopo.getNumeroRodada & ",'')"
            objResultado = objConBanco.executarSPScalar(strSql, GarantiaTransacional.getConexao, GarantiaTransacional.getTransacao)


        Finally
        End Try
    End Sub

    Public Sub alterarEscopo(ByVal objEscopo As Escopo)
        Dim strSql As String
        Dim objConBanco As ConexaoBanco = New ConexaoBanco
        Dim objResultado As Object
        Try
            strSql = "UPDATE escopoEstimativa SET descricao = '" + objEscopo.getDescricao + "' , premissa = '" + objEscopo.getPremissa + "' , unidadeEstimativa = '" + objEscopo.getUnidadeEstimativa + "' , Situacao = '" + objEscopo.getSituacao + "', numeroRodadas = " + objEscopo.getNumeroRodada + _
                    " WHERE idProjeto = " + objEscopo.getIdProjeto & " and idEscopoEstimativa = " & objEscopo.getId

            objResultado = objConBanco.executarSPScalar(strSql, GarantiaTransacional.getConexao, GarantiaTransacional.getTransacao)


        Finally
        End Try
    End Sub

    Public Sub excluirEscopo(ByVal objParametroEscopo As ParametroEscopo)
        Dim strSql As String
        Dim objConBanco As ConexaoBanco = New ConexaoBanco
        Dim objResultado As Object
        Try
            strSql = "DELETE FROM escopoEstimativa where IdProjeto = " & objParametroEscopo.getIdProjeto & " AND IdEscopoEstimativa = " & objParametroEscopo.getIdEscopo & ""

            objResultado = objConBanco.executarSPScalar(strSql, GarantiaTransacional.getConexao, GarantiaTransacional.getTransacao)
        Finally
        End Try
    End Sub


    Public Sub alterarSituacaoSessao(ByVal objEscopo As Escopo, ByVal strSituacao As String)
        Dim strSql As String
        Dim objConBanco As ConexaoBanco = New ConexaoBanco
        Dim objResultado As Object
        Try

            Select Case strSituacao
                Case "FINALIZADA"
                    strSql = "UPDATE EscopoEstimativa SET situacao = '" & strSituacao & "', avaliacaoEstimativa = '" & objEscopo.getAvaliacaoEstimativa & "', observacoes = '" & objEscopo.getObservacao & "' WHERE idEscopoEstimativa = " & objEscopo.getId

                Case Else
                    strSql = "UPDATE EscopoEstimativa SET situacao = '" & strSituacao & "' WHERE idEscopoEstimativa = " & objEscopo.getId
            End Select
            
            objResultado = objConBanco.executarSPScalar(strSql, GarantiaTransacional.getConexao, GarantiaTransacional.getTransacao)

        Finally
        End Try
    End Sub


    Public Function consultarSessao(ByVal objParametroEscopo As ParametroEscopo) As List(Of Sessao)
        Dim strSql As String
        Dim objConBanco As ConexaoBanco = New ConexaoBanco
        Dim objResultado As DataSet
        Dim lstSessao As List(Of Sessao) = Nothing
        Dim strCriterio As String = "WHERE"
        Dim intContador As Integer
        Try
            strSql = "SELECT idSessao, ee.IdEscopoEstimativa, s.situacao, numeroRodadas FROM escopoEstimativa as ee " & _
                    " INNER JOIN sessao s " & _
                    "	ON ee.IdEscopoEstimativa = s.IdEscopoEstimativa "



            If Not objParametroEscopo Is Nothing AndAlso objParametroEscopo.getIdEscopo <> "" Then
                strSql += strCriterio + " IdEscopoEstimativa = " + objParametroEscopo.getIdEscopo + ""
                strCriterio = " AND "
            End If

            objResultado = objConBanco.executarConsulta(strSql)

            If objResultado.Tables(0).Rows.Count > 0 Then
                lstSessao = New List(Of Sessao)
                For intContador = 0 To objResultado.Tables(0).Rows.Count - 1
                    lstSessao.Add(New Sessao(objResultado.Tables(0).Rows(intContador)("Situacao"), _
                                                        objResultado.Tables(0).Rows(intContador)("idSessao"), _
                                                        objResultado.Tables(0).Rows(intContador)("numeroRodadas")))
                Next
            End If

            consultarSessao = lstSessao

        Finally
        End Try
    End Function


End Class
